/*
 * 文件名:BigDecimalConverter.java
 * 创建时间:2009-03-10
 * 版本:1.0
 * 版权所有:杨涛
 */
package com.yangtao.framework.web.convertor;

import org.apache.struts2.util.StrutsTypeConverter;

import java.math.BigDecimal;
import java.util.Map;

/**
 * 自定义的BigDecimal转换器。在http请求提交到目标action之前和http请求发送到客户端之前，<br>
 * 完成对action中BigDecimal类型的参数的转换，<br>
 * 根据xwork-conversion.properties文件的位置决定它使用的范围，<br>
 * 如果把xwork-conversion.properties放在classpath根目录下，那么它将对所有的action有效，<br>
 * 配置请参见classpath根目录下的xwork-conversion.properties文件
 *
 * @author 杨涛
 * @创建时间:2009-03-10
 * @修改者:
 * @修改时间:
 * @修改原因:
 * @版本:1.0
 * @see xwork-conversion.properties
 */
public class BigDecimalConverter extends StrutsTypeConverter {

	/**
	 * 从String类型转换到BigDecimal类型
	 *
	 * @param arg0
	 * @param arg1 String 数组
	 * @param arg2 目标类型
	 * @return 转换后的BigDecimal的值
	 */
	@SuppressWarnings("unchecked")
	public Object convertFromString(Map arg0, String[] arg1, Class arg2) {

		// 如果String数组为空或者String数组的长度为0
		if (arg1 == null || arg1.length == 0) {
			// 返回空对象
			return null;
		}
		BigDecimal decimal = null;
		String value = arg1[0].trim();
		if (arg2 == BigDecimal.class) {
			try {
				decimal = BigDecimal.valueOf(Double.valueOf(value.replace(",",
						"")));
			} catch (NumberFormatException e) {
				return decimal;
			}
		}
		return decimal;
	}

	/**
	 * 从BigDecimal类型转换到String类型
	 *
	 * @param arg0
	 * @param arg1 BigDecimal类型的值
	 * @return 经过转换的String类型的值
	 */
	@SuppressWarnings("unchecked")
	public String convertToString(Map arg0, Object arg1) {
		return arg1.toString();
	}

}
